//
//  OAuthViewController.swift
//  YYJWeibo
//
//  Created by yujing on 16/5/14.
//  Copyright © 2016年 yujing. All rights reserved.
//

import UIKit
import SVProgressHUD

class OAuthViewController: UIViewController {
    
    
    private lazy var webView = UIWebView()
    
    // MARK: - 视图生命周期
    override func loadView() {
        
        view = webView
        
        // 设置导航栏
        title = "登录新浪微博"
        //navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont.systemFontOfSize(16)]
        navigationItem.leftBarButtonItem = UIBarButtonItem(
            title: "取消",
            style: .Plain,
            target: self,
            action: "clickCloseButton")
        
        navigationItem.rightBarButtonItem = UIBarButtonItem(
            title: "自动填充",
            style: .Plain,
            target: self,
            action: "clickAutoFillButton")
        
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 在纯代码开发中，所有的 view 都要指定背景颜色
        view.backgroundColor = UIColor.whiteColor()
        
        // 加载授权 URL
        webView.loadRequest(NSURLRequest(URL: NetworkTools.sharedTools.oauthURL))
        
        // 设置代理
        webView.delegate = self
        
        
    }
    
    // MARK: - 监听方法
    @objc private func clickCloseButton() {
        SVProgressHUD.dismiss()
        
        dismissViewControllerAnimated(true, completion: nil)
    }
    
    /// 自动填充用户信息
    @objc private func clickAutoFillButton() {
        
        let js = "document.getElementById('userId').value='daoge10000@sina.cn';" +
        "document.getElementById('passwd').value='qqq123';"
        
        // 执行 js
        webView.stringByEvaluatingJavaScriptFromString(js)
    }
    
    
}

extension OAuthViewController:UIWebViewDelegate {
    
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        print(request)
        
        // 判断 url 是否是回调地址 如果不是，就继续加载页面
        if let urlString = request.URL?.absoluteString
            where !urlString.hasPrefix(NetworkTools.sharedTools.redirectUri){
            
            return true // true，表示继续加载 false就什么都不做了
        }
        
        
        // 如果是回调地址
        // 判断回调地址中的参数 如果授权成功 URL的 `查询字符串` 中包含 code 参数
        // query 是 URL 问号 `?` 后面所有的内容
        guard let query = request.URL?.query
            where query.hasPrefix("code=") else {
                print("取消授权")
                
                dismissViewControllerAnimated(true, completion: nil)
                return false
                
        }
        
        print("请求字符串" + query)
        
        // 如果授权成功，获取授权成功 URL 中的code  获取请求码 code
        let code = query.substringFromIndex("code=".endIndex)
        print("请求码 = \(code)")
        
        // 获取code后 发起网络请求，做后续操作
        NetworkTools.sharedTools.loadAccessToken(code) { (reuslt) -> () in
            
            guard let result = reuslt else {
                print("您的网络不给力")
                return
            }
            
          
        }
        
        return true
    }
    
    
}








